﻿using System;
using System.Data;
using System.Collections.Generic;
using eTMS.Controllers.SinhVienTrungTuyenService;
namespace eTMS.Controllers
{
    public class SinhVienTrungTuyenControllerBase : CommonController
    {
        public SinhVienTrungTuyenControllerBase()
            : base()
        {
            this.dao = new SinhVienTrungTuyenServiceClient();
        }
        ~SinhVienTrungTuyenControllerBase()
        {
            if (dao.State == System.ServiceModel.CommunicationState.Opened) try { dao.Close(); }
                catch { }
        }
        private DataTable _Table;
        private SinhVienTrungTuyenEntity oSinhVienTrungTuyen;
        public SinhVienTrungTuyenEntity SinhVienTrungTuyenObject
        {
            get
            {
                return oSinhVienTrungTuyen;
            }
            set
            {
                oSinhVienTrungTuyen = value;
            }
        }
        protected SinhVienTrungTuyenServiceClient dao;
        public DataTable Table
        {
            get
            {
                return _Table;
            }
            set
            {
                _Table = value;
            }
        }
        public void AddIndexToTable()
        {
            this.AddIndexToTable(_Table);
        }
        public void ResetTableIndex()
        {
            this.ResetTableIndex(_Table);
        }
        public bool AddNew()
        {
            if (oSinhVienTrungTuyen == null) return false;
            bool result = true;
            try
            {
                oSinhVienTrungTuyen = dao.SaveRet(oSinhVienTrungTuyen);
            }
            catch
            {
                result = false;
            }
            if (result)
            {
                _ListSinhVienTrungTuyen.Add(oSinhVienTrungTuyen);
            }
            return result;
        }
        public bool Update()
        {
            if (oSinhVienTrungTuyen == null) return false;
            return dao.Update(oSinhVienTrungTuyen);
        }
        public bool Delete()
        {
            if (oSinhVienTrungTuyen == null) return false;
            bool retvalue = dao.Delete(oSinhVienTrungTuyen);
            if (retvalue)
            {
                _ListSinhVienTrungTuyen.Remove(oSinhVienTrungTuyen);
            }
            return retvalue;
        }
        public bool DeleteByID(Int32 SinhVienTrungTuyen_ID)
        {
            bool retvalue = dao.DeleteByID(SinhVienTrungTuyen_ID);
            if (retvalue)
            {
                SinhVienTrungTuyenEntity oDeleted = FindSinhVienTrungTuyen(SinhVienTrungTuyen_ID);
                if (oDeleted != null)
                {
                    _ListSinhVienTrungTuyen.Remove(oDeleted);
                }
            }
            return retvalue;
        }
        public void ResetObject()
        {
            this.oSinhVienTrungTuyen = new SinhVienTrungTuyenEntity();
        }
        //Check if exists SoBaoDanh
        public bool CheckExistsSoBaoDanh(object value)
        {
            return dao.SelectAllFilter("SoBaoDanh='" + value.ToString() + "'").Length > 0;
        }
        //Copy data from data row in grid to object
        public SinhVienTrungTuyenEntity MapDataRowToObject(DataRow row)
        {
            SinhVienTrungTuyenEntity o = new SinhVienTrungTuyenEntity();
            o.SoBaoDanh = Convert.ToString(row["SoBaoDanh"]);
            o.HoTenSinhVien = Convert.ToString(row["HoTenSinhVien"]);
            o.DiaChi = Convert.ToString(row["DiaChi"]);
            o.SoCMND = Convert.ToString(row["SoCMND"]);
            o.DienThoai = Convert.ToString(row["DienThoai"]);
            if (!row.IsNull("GioiTinh"))
                o.GioiTinh = ConvertBool(row["GioiTinh"]);
            o.NgaySinh = Convert.ToString(row["NgaySinh"]);
            if (!row.IsNull("HeDaoTao_ID"))
                o.HeDaoTao_ID = ConvertInt(row["HeDaoTao_ID"]);
            o.DanToc = Convert.ToString(row["DanToc"]);
            o.TonGiao = Convert.ToString(row["TonGiao"]);
            o.QuocGia = Convert.ToString(row["QuocGia"]);
            if (!row.IsNull("NamTNPT"))
                o.NamTNPT = ConvertInt(row["NamTNPT"]);
            o.DoiTuong = Convert.ToString(row["DoiTuong"]);
            o.KhuVuc = Convert.ToString(row["KhuVuc"]);
            o.QuanHuyen = Convert.ToString(row["QuanHuyen"]);
            o.TinhThanh = Convert.ToString(row["TinhThanh"]);
            o.TruongDuTuyen = Convert.ToString(row["TruongDuTuyen"]);
            o.NganhDuTuyen = Convert.ToString(row["NganhDuTuyen"]);
            o.TruongTrungTuyen = Convert.ToString(row["TruongTrungTuyen"]);
            o.NganhTrungTuyen = Convert.ToString(row["NganhTrungTuyen"]);
            o.Lop12 = Convert.ToString(row["Lop12"]);
            o.Lop11 = Convert.ToString(row["Lop11"]);
            o.Lop10 = Convert.ToString(row["Lop10"]);
            if (!row.IsNull("TongDiemThi"))
                o.TongDiemThi = ConvertNumber(row["TongDiemThi"]);
            if (!row.IsNull("TongDiemUuTien"))
                o.TongDiemUuTien = ConvertNumber(row["TongDiemUuTien"]);
            if (!row.IsNull("IsDaNop"))
                o.IsDaNop = ConvertBool(row["IsDaNop"]);
            if (!row.IsNull("SinhVien_ID"))
                o.SinhVien_ID = ConvertInt(row["SinhVien_ID"]);
            if (!row.IsNull("NgayNhap"))
                o.NgayNhap = ConvertDateTime(row["NgayNhap"]);
            o.NguoiNhap = Convert.ToString(row["NguoiNhap"]);
            if (!row.IsNull("KhoaHoc_ID"))
                o.KhoaHoc_ID = (Int32)(row["KhoaHoc_ID"]);
            if (!row.IsNull("SinhVienTrungTuyen_ID"))
                o.SinhVienTrungTuyen_ID = (Int32)(row["SinhVienTrungTuyen_ID"]);
            return o;
        }
        //Copy data from object to data row in grid    
        public void MapObjectToDataRow(SinhVienTrungTuyenEntity o, DataRow row)
        {
            row["SoBaoDanh"] = o.SoBaoDanh;
            row["HoTenSinhVien"] = o.HoTenSinhVien;
            row["DiaChi"] = o.DiaChi;
            row["SoCMND"] = o.SoCMND;
            row["DienThoai"] = o.DienThoai;
            row["GioiTinh"] = o.GioiTinh;
            row["NgaySinh"] = o.NgaySinh;
            row["HeDaoTao_ID"] = o.HeDaoTao_ID;
            row["DanToc"] = o.DanToc;
            row["TonGiao"] = o.TonGiao;
            row["QuocGia"] = o.QuocGia;
            row["NamTNPT"] = o.NamTNPT;
            row["DoiTuong"] = o.DoiTuong;
            row["KhuVuc"] = o.KhuVuc;
            row["QuanHuyen"] = o.QuanHuyen;
            row["TinhThanh"] = o.TinhThanh;
            row["TruongDuTuyen"] = o.TruongDuTuyen;
            row["NganhDuTuyen"] = o.NganhDuTuyen;
            row["TruongTrungTuyen"] = o.TruongTrungTuyen;
            row["NganhTrungTuyen"] = o.NganhTrungTuyen;
            row["Lop12"] = o.Lop12;
            row["Lop11"] = o.Lop11;
            row["Lop10"] = o.Lop10;
            row["TongDiemThi"] = o.TongDiemThi;
            row["TongDiemUuTien"] = o.TongDiemUuTien;
            row["IsDaNop"] = o.IsDaNop;
            row["SinhVien_ID"] = o.SinhVien_ID;
            row["NgayNhap"] = o.NgayNhap;
            row["NguoiNhap"] = o.NguoiNhap;
            row["KhoaHoc_ID"] = o.KhoaHoc_ID;
            row["SinhVienTrungTuyen_ID"] = o.SinhVienTrungTuyen_ID;
        }
        public void MapObjectToDataRow(DataRow row)
        {
            this.MapObjectToDataRow(this.SinhVienTrungTuyenObject, row);
        }
        public void LoadObject(Int32 SinhVienTrungTuyen_ID)
        {
            SinhVienTrungTuyenEntity oLoad = FindSinhVienTrungTuyen(SinhVienTrungTuyen_ID);
            if (oLoad == null)
            {
                oSinhVienTrungTuyen = this.LoadSinhVienTrungTuyen(SinhVienTrungTuyen_ID);
                bool bNotIsNull = true;
                bNotIsNull &= oSinhVienTrungTuyen.IsNullSinhVienTrungTuyen_ID;
                if (!bNotIsNull)
                {
                    this.ListSinhVienTrungTuyen.Add(oSinhVienTrungTuyen);
                }
            }
            else
            {
                oSinhVienTrungTuyen = oLoad;
            }
        }
        #region CachedList SinhVienTrungTuyen
        private static List<SinhVienTrungTuyenEntity> _ListSinhVienTrungTuyen = new List<SinhVienTrungTuyenEntity>();
        public List<SinhVienTrungTuyenEntity> ListSinhVienTrungTuyen
        {
            get
            {
                return _ListSinhVienTrungTuyen;
            }
        }
        public static List<SinhVienTrungTuyenEntity> ListSinhVienTrungTuyenStatic
        {
            get
            {
                return _ListSinhVienTrungTuyen;
            }
        }
        public SinhVienTrungTuyenEntity FindSinhVienTrungTuyen(Int32 SinhVienTrungTuyen_ID)
        {
            SinhVienTrungTuyenEntity oResult = this.ListSinhVienTrungTuyen.Find(delegate(SinhVienTrungTuyenEntity oFind)
            {
                bool result = true;
                result &= oFind.SinhVienTrungTuyen_ID.Equals(SinhVienTrungTuyen_ID);
                return result;
            });
            return oResult;
        }
        public static void LoadAllSinhVienTrungTuyen(bool clearCache)
        {
            if (_ListSinhVienTrungTuyen.Count == 0)
                clearCache = true;
            if (!clearCache) return;
            SinhVienTrungTuyenServiceClient dao = new SinhVienTrungTuyenServiceClient();
            _ListSinhVienTrungTuyen = new List<SinhVienTrungTuyenEntity>(dao.SelectAll());
            if (dao.State == System.ServiceModel.CommunicationState.Opened) try { dao.Close(); }
                catch { }
        }
        public SinhVienTrungTuyenEntity LoadSinhVienTrungTuyen(Int32 SinhVienTrungTuyen_ID)
        {
            SinhVienTrungTuyenEntity o = dao.SelectOne(SinhVienTrungTuyen_ID);
            return o;
        }
        #endregion
    }
}
